2) 3대 좌표계 이해

Mathit에서 그림을 그릴 때는 내가 어떤 공간에 도형을 배치하고 있는가? 를 이해하는 것이 중요합니다.

Mathit은 내부적으로 3가지 독립된 좌표계를 사용합니다. 이 3개 좌표계의 역할을 구분할 줄 알면 2D 함수 그래프, 3D 입체 도형, 라벨 글자까지 헷갈리지 않고 그릴 수 있습니다.

1. 2D 평면 공간부터 알아보자

문제집에서 보는 일반적인 좌표평면 공간입니다.

순수한 수학적 실수 단위 (단위 없음)를 사용하며 점, 선분, 다각형, 2D 함수 곡선, 영역 채우기, 교점 계산에 쓰입니다. 화면을 확대하거나 축소하면 도형의 위치와 크기도 좌표 비율에 맞게 함께 확대/축소됩니다.

// (0,0)과 (4,3)을 잇는 선분을 그립니다.
A = (0, 0)
B = (4, 3)
line: A--B

@view 설정을 통해 화면에 보여줄 2D 좌표 범위를 지정할 수 있습니다.

@view: [-5, 5], [-3, 7]  // x축 -5~5, y축 -3~7 범위를 화면에 맞춤

2. 3D 공간을 알아보자

입체 기하와 곡면을 표현하기 위한 3차원 공간입니다. 순수한 3D 수학적 실수 단위를 사용하고 정육면체, 구, 원기둥, 3D 매개변수 곡면, 입체 단면 절단 등에 쓰입니다. 설정한 카메라 시점(@3d)에 따라 3차원 공간의 도형들이 2D 평면 공간으로 자동 투영되어 그려집니다.

// 카메라 시점 설정 (고도 30도, 방위각 45도, 사선 투영)
@3d: cam(elev=30deg, azim=45deg, proj=oblique)

// 중심이 (0,0,0)이고 한 변의 길이가 4인 정육면체 그리기
K = cube(size=4, center=(0,0,0))
draw: K

투영 방식 (proj)을 알아보자면

oblique은 사선 투영, iso는 등메트릭 투영, persp은 원근감이 적용되는 원근 투영을 사용합니다.

3. 스크린 오버레이 공간을 알아보자

그림의 확대/축소나 3D 카메라 각도와 상관없이 항상 일정해야 하는 화면 치수 공간입니다. 기본 단위는 pt, mm, px를 사용합니다. 텍스트 라벨, 각도 표시 호의 반지름, 직각 표시 크기, 선 두께, 점의 크기에 쓰입니다. 2D/3D 좌표 공간이 아무리 확대되거나 기울어져도 스크린 오버레이 공간의 요소들은 종이 위에 인쇄되는 실제 인쇄물 크기를 그대로 유지한다는 특징이 있습니다.

// 선 두께(1.5pt), 점 크기(4pt), 라벨 여백(10pt) 등은 스크린 오버레이 공간 단위입니다.
line: A--B, thick=1.5pt
dot: A, size=4pt
ang: A--B--C, "$\theta$", r=15pt  // 각도 표시 호의 반지름이 15pt로 고정됨

3대 좌표계가 함께 쓰이는 예시

세 좌표계가 실제로 한 코드 안에서 어떻게 어우러 지는지 살펴 보겠습니다.

// 3D 공간은 카메라 및 정육면체 설정에 사용됩니다
@3d: cam(elev=35deg, azim=45deg, proj=oblique)
K = cube(size=4)

// 2D 공간은 정육면체의 꼭짓점 좌표를 평면 상에 위치시키는데 사용됩니다
A = K.v("top-front-left")
B = K.v("front-bottom")

// 스크린 오버레이 공간은 선 두께(2pt), 점 크기(3pt), 라벨 방위 및 위치 지정에 사용됩니다
draw: K, hide=dash, thick=1.5pt // 은선은 점선 처리, 두께 1.5pt
dot: A, size=3pt // 점 크기 3pt
label: A"A"(w) // 점 A의 서쪽(w) 방향으로 라벨 배치

이제 Mathit의 공간 개념이 정리되었을 것입니다.

다음으로는 실제 수식을 그려봅시다.

이 문서가 도움이 되셨나요?

문서 개선에 반영할 솔직한 피드백을 선택해주세요.

Mathit Documentation 개발: Feynerin